package com.ch.base.util;

public class StringUtils {
	/**
	 * <b>判斷字串是否為空</b>
	 * @param 	checkStr 欲判斷之字串
	 * @return 	boolean
	 */
	public static boolean isEmpty(String checkStr) {
		boolean result = true;
		if ((null != checkStr) && (!checkStr.trim().equals(""))) {
			result = false;
		}
		return result;
	}

	/**
	 * <b>判斷字串是否不為空</b>
	 * @param 	checkStr 欲判斷之字串
	 * @return 	boolean
	 */
	public static boolean isNotEmpty(String checkStr) {
		boolean result = false;
		if ((null != checkStr) && (!checkStr.trim().equals(""))) {
			result = true;
		}
		return result;
	}

	/**
	 * <b>左補字串</b>
	 * @param 	origStr	原本字串
	 * @param 	length	指定長度
	 * @param 	newWord 補充字元
	 * @return 	字串
	 */
	public static String lPad(String origStr, int length, String newWord) {
		String result = "";
		if (length > 0) {
			if (origStr.length() < length) {
				int i = 0;
				while (result.length() < (length - origStr.length())) {
					if (i >= newWord.length()) {
						i = 0;
					}
					result += newWord.substring(i, 1);
					i++;
				}
			}
			result += origStr;
			return result;
		}else{
			return result;
		}
	}

	/**
	 * <b>右補字串</b>
	 * @param 	origStr	原本字串
	 * @param 	length	指定長度
	 * @param 	newWord 補充字元
	 * @return 	字串
	 */
	public static String rPad(String origStr, int length, String newWord) {
		String result = "";
		if (length > 0) {
			if (origStr.length() < length) {
				int i = 0;
				while (result.length() < (length - origStr.length())) {
					if (i >= newWord.length()) {
						i = 0;
					}
					result += newWord.substring(i, 1);
					i++;
				}
			}
			result = origStr + result;
			return result;
		}else{
			return result;
		}
	}

	/**
	 * <b>去除字串前後的空白</b>
	 * @param 	origStr	原本字串
	 * @return	字串
	 */
	public static String trim(String origStr){
		return origStr.trim();
	}

	/**
	 * <b>去除字串左邊的空白</b>
	 * @param 	origStr	原本字串
	 * @return	字串
	 */
	public static String lTrim(String origStr){
		String result = "";
		result = origStr.replaceAll("^[\\s]+", ""); 
		return result;
	}

	/**
	 * <b>去除字串右邊的空白</b>
	 * @param 	origStr	原本字串
	 * @return	字串
	 */
	public static String rTrim(String origStr){
		String result = "";
		result = origStr.replaceAll("[\\s]+$", ""); 
		return result;
	}

	/**
	 * <b>將字串的第一個字元大寫</b>
	 * @param 	origStr	原本字串
	 * @return	字串
	 */
	public static String upperfirst(String origStr){
		String result = "";
		result = Character.toUpperCase(origStr.charAt(0)) + origStr.substring(1);
		return result;
	}

	/**
	 * <b>將字串的第一個字元小寫</b>
	 * @param 	origStr	原本字串
	 * @return	字串
	 */
	public static String lowerfirst(String origStr){
		String result = "";
		result = Character.toLowerCase(origStr.charAt(0)) + origStr.substring(1);
		return result;
	}


	/**
	 * <b>將文字字串中的第一個英文字母和分隔字元後之字母轉換成大寫字母。其餘所有的字母則都轉換成小寫字母。</b>
	 * @param 	origStr	原本字串
	 * @return	字串
	 */
	public static String proper(String origStr, String strSplit){
		String result = "";
		if(StringUtils.isEmpty(strSplit)){
			result = upperfirst(origStr.substring(0, 1)) + origStr.substring(1).toLowerCase();
		}else{
			String[] origStrArr = origStr.split(strSplit);
			for(int i = 0; i < origStrArr.length; i++){
				result += upperfirst(origStrArr[i].substring(0, 1)) + origStrArr[i].substring(1).toLowerCase();
			}
		}
		return result;
	}
}
